home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / bavarian / 011-020 / 014_anwendungen_3 / 3-d grafik / 3d-grafik (.txt) next >
AmigaBASIC Source Code  |  1993-11-04  |  4KB  |  175 lines

  1. 'Grafik von     Stefan Huchler
  2.  
  3. CLEAR
  4. FOR j= 0 TO 8
  5. READ sp%(j):NEXT
  6. DATA 65,0,120,0,22200,64,10,0,0
  7. k1=6:k2=3:k3=4
  8. SCREEN 2,640,200,3,2
  9. WINDOW 3,"3D",,8,2
  10. COLOR 2,1:CLS
  11. LOCATE 2,2:PRINT "Räumliche Betrachtung von Funktionen mit der Rot-Grün-Brille"
  12. LOCATE 4,9:PRINT "Geschrieben von Stefan Huchler März 1987"
  13. LOCATE 8,2:PRINT "Auswahl der Funktion : "+CHR$(187)
  14. st3:i$=INKEY$:IF i$="" THEN GOTO st3
  15. WINDOW CLOSE 3
  16. SCREEN CLOSE 2
  17. GOTO auswahl
  18.  
  19. 'Grafik-Fenster öffnen
  20. weiter:
  21. WINDOW CLOSE 3
  22. SCREEN CLOSE 2
  23. SCREEN 2,640,400,3,4
  24. WINDOW 2,"Graphik",,8,2
  25. PALETTE 6,1,1,1
  26. PALETTE 1,0,0,0
  27. PALETTE 0,0,0,0
  28. PALETTE 4,0.33,0.87,0
  29. PALETTE 5,0.93,0.2,0
  30. COLOR 1,2:CLS
  31.  
  32. 'Zeichnen der Funktion
  33. 'x-Achsen
  34. 'gruen
  35. FOR y1=-17 TO 17 STEP 2
  36. x=100+(y1*5)
  37. z1=FNf(-1.7,y1/10)
  38. y=350-(z1+y1*5):PSET (x,y),4
  39.  
  40. FOR x1=-16 TO 17
  41. z1= FNf(x1/10,y1/10)
  42. x=x+10
  43. y=350-(z1+5*y1)
  44. LINE STEP(0,0)-(x,y),4
  45.  
  46. NEXT x1
  47. NEXT y1
  48.  
  49. 'rot
  50. a=17
  51. FOR y1=-17 TO 17 STEP 2
  52. a=a-2:x=100+(y1*5)+3+a/k2
  53. z1=FNf(-1.7,y1/10)
  54. y=350-(z1+y1*5)-k1:PSET (x,y),5
  55.  
  56. FOR x1=-16 TO 17
  57. z1= FNf(x1/10,y1/10)
  58. x=x+10
  59. y=350-(z1+5*y1)-k1
  60. LINE STEP(0,0)-(x,y),5
  61.  
  62. NEXT x1
  63. NEXT y1
  64.  
  65. 'y-Achsen
  66. 'gruen
  67. x0=-5
  68. FOR x1=-17 TO 17 STEP 2
  69. x0=20+x0:x=x0
  70. z1=FNf(x1/10,-1.7)
  71. y=350-(z1-85):PSET (x,y),4
  72.  
  73. FOR y1=-16 TO 17
  74. z1= FNf(x1/10,y1/10)
  75. x=x+5
  76. y=350-(z1+5*y1)
  77. LINE STEP(0,0)-(x,y),4
  78.  
  79. NEXT y1
  80. NEXT x1
  81.  
  82. 'rot
  83. x0=-5
  84. FOR x1=-17 TO 17 STEP 2
  85. x0=20+x0:x=x0
  86. z1=FNf(x1/10,-1.7)
  87. y=350-(z1-85)-k1:PSET (x+8.7,y),5
  88.  
  89. a=16
  90. FOR y1=-16 TO 17
  91. a=a-1
  92. z1= FNf(x1/10,y1/10)
  93. xx=3+a/k2
  94. x=x+5
  95. y=350-(z1+5*y1)-k1
  96. LINE STEP(0,0)-(x+xx,y),5
  97.  
  98. NEXT y1
  99. NEXT x1
  100.  
  101. COLOR 6,2
  102. s$=TRANSLATE$("press any key to continue")
  103. SAY s$,sp%
  104.  
  105. st2:i$=INKEY$:IF INKEY$="" THEN GOTO st2
  106.  
  107. 'Auswahlmenue zeigen
  108. auswahl:
  109. SCREEN 2,640,200,3,2
  110. WINDOW 3,"3D",,8,2
  111. CLS:LOCATE 1,10:PRINT "Auswahl"
  112. LOCATE 4,5:PRINT "Ende :        (0)"
  113. LOCATE 6,5:PRINT "Mulde :       (1)"
  114. LOCATE 8,5:PRINT "Hut :         (2)"
  115. LOCATE 10,5:PRINT "Glocke :      (3)"
  116. LOCATE 12,5:PRINT "Blüte :       (4)"
  117. LOCATE 14,5:PRINT "Wanne :       (5)"
  118. LOCATE 16,5:PRINT "Gewölbe :     (6)"
  119. LOCATE 18,5:PRINT "Welle :       (7)"
  120. LOCATE 20,5:PRINT "Sinus :       (8)"
  121. LOCATE 22,5:PRINT "Kugel :       (9)"
  122. LOCATE 1,45:PRINT "Räumliche Wirkung :"
  123. LOCATE 4,45:PRINT "normal :  (n)"
  124. LOCATE 6,45:PRINT "extrem :  (e)"
  125. st4:LOCATE k3,59:PRINT CHR$(171):LOCATE k3+2,59:PRINT " ":LOCATE k3-2,59:PRINT " "
  126.  
  127. st1:i$=INKEY$:IF i$="" THEN GOTO st1
  128. IF i$="n" THEN k1=6:k2=3:k3=4:GOTO st4
  129. IF i$="e" THEN k1=8:k2=2:k3=6:GOTO st4
  130. IF ASC(i$)<48 OR ASC(i$)>57 THEN GOTO st1
  131. ON VAL(i$)+1 GOTO ende,f1,f2,f3,f4,f5,f6,f7,f8,f9
  132.  
  133. ende:
  134. PALETTE 1,1,1,1
  135. PALETTE 0,0.4,0.6,1
  136. WINDOW CLOSE 3
  137. SCREEN CLOSE 2
  138. END
  139. f1:
  140. DEF FNf(x,y)=150*SIN(SQR(x*x+y*y))
  141. GOTO weiter
  142.  
  143. f2:
  144. DEF FNf(x,y)=80*(COS(SQR(x*x+y*y))-COS(3*SQR(x*x+y*y))/3+COS(5*SQR(x*x+y*y))/5-COS(7*SQR(x*x+y*y))/7)+150
  145. GOTO weiter
  146.  
  147. f3:
  148. DEF FNf(x,y)=150*EXP((x*x+y*y)/-2)+100
  149. GOTO weiter
  150.  
  151. f4:
  152. DEF FNf(x,y)=80*((x*x)^(1/3)+(y*y)^(1/3))-30
  153. GOTO weiter
  154.  
  155. f5:
  156. DEF FNf(x,y)=100*(EXP(-COS(SQR(x*x+y*y))))
  157. GOTO weiter
  158.  
  159. f6:
  160. DEF FNf(x,y)=140*(EXP(-(x)*x)+EXP(-(y)*y)-EXP(-(x)*x-(y)*y)+0.5)
  161. GOTO weiter
  162.  
  163. f7:
  164. DEF FNf(x,y)=20*(SIN(x*5)+SIN(y*5))+110
  165. GOTO weiter
  166.  
  167. f8:
  168. DEF FNf(x,y)=60*(SIN(x*2)+COS(y*2))+180
  169. GOTO weiter
  170.  
  171. f9:
  172. DEF FNf(x,y)=100*(SIN(1.5708-ATN(SQR(x*x+y*y)/SQR(ABS(1-(x*x+y*y))))))+50
  173. GOTO weiter
  174.  
  175.